<?php
namespace app\models;

/**
 * Created by PhpStorm.
 * User: lxy
 * Date: 2016/1/14
 * Time: 16:04
 */
use app\controllers\WeixinPayCallbackController;
use Yii;
use app\lib\BaseModel;

class T_WX_PAY_LOG extends BaseModel
{
    /*PROCEDURE P_WXMALL_PAY_ORDER
    (
    RESULTCODE IN VARCHAR2         --业务结果
    , ERRCODEDES IN VARCHAR2          --错误代码描述
    , USERID IN VARCHAR2             --用户编号
    , TOTALFEE IN NUMBER             --订单总金额，单位为分
    , TRANSACTIONID IN VARCHAR2      --微信支付订单号 订单号
    , TIMEEND IN VARCHAR2            --支付完成时间，格式为yyyyMMddHHmmss，如2009年12月25日9点10分10秒表示为20091225091010
    , RESULTS OUT VARCHAR2           --返回值
    )*/

    public static function write_P_WXMALL_PAY_ORDER($RESULTCODE, $ERRCODEDES, $USERID, $TOTALFEE, $OUT_TRADE_NO, $TRANSACTION_ID, $TIMEEND, $ATTACH)
    {

        $cmd = static::query()->createCommand('call P_WXMALL_PAY_ORDER(:RESULTCODE,:ERRCODEDES,:USERID,:TOTALFEE,:OUT_TRADE_NO,:TRANSACTION_ID,:TIMEEND,:ATTACH,:RESULTS)');
        $cmd->bindValue(':RESULTCODE', $RESULTCODE);
        $cmd->bindValue(':ERRCODEDES', $ERRCODEDES);
        $cmd->bindValue(':USERID', $USERID);
        $cmd->bindValue(':TOTALFEE', $TOTALFEE);
        $cmd->bindValue(':OUT_TRADE_NO', $OUT_TRADE_NO);
        $cmd->bindValue(':TRANSACTION_ID', $TRANSACTION_ID);
        $cmd->bindValue(':TIMEEND', $TIMEEND);
        $cmd->bindValue(':ATTACH', $ATTACH);

        $cmd->bindParam(':RESULTS', $RESULTS, \PDO::PARAM_STR, 50);
        $cmd->execute();
//        Yii::trace($orderid);
        return $RESULTS;
    }

    //微信回调写入
    /*CREATE OR REPLACE PROCEDURE P_WXMALL_PAY_DORABAG_ORDER  --已支付包订单更改状态
(
  RESULTCODE IN VARCHAR2         --业务结果
, ERRCODEDES IN VARCHAR2          --错误代码描述
, USERID IN VARCHAR2             --用户编号
, TOTALFEE IN NUMBER             --订单总金额，单位为分
, OUT_TRADE_NO IN VARCHAR2      --商户订单号
,TRANSACTION_ID IN VARCHAR2      --微信的支付订单号
, TIMEEND IN VARCHAR2            --支付完成时间，格式为yyyyMMddHHmmss，如2009年12月25日9点10分10秒表示为20091225091010
, ATTACHIN  IN VARCHAR2            --附加数据，在查询API和支付通知中原样返回，该字段主要用于商户携带订单的自定义数据
, RESULTS OUT VARCHAR2           --返回值
)*/
    public static function P_WXMALL_PAY_DORABAG_ORDER($RESULTCODE, $ERRCODEDES, $OPENID, $TOTALFEE, $OUT_TRADE_NO, $TRANSACTION_ID, $TIMEEND, $ATTACH)
    {

        $cmd = static::query()->createCommand('call P_WXMALL_PAY_DORABAG_ORDER(:RESULTCODE,:ERRCODEDES,:USERID,:TOTALFEE,:OUT_TRADE_NO,:TRANSACTION_ID,:TIMEEND,:ATTACH,:RESULTS)');
        $cmd->bindValue(':RESULTCODE', $RESULTCODE);
        $cmd->bindValue(':ERRCODEDES', $ERRCODEDES);
        $cmd->bindValue(':USERID', $OPENID);
        $cmd->bindValue(':TOTALFEE', $TOTALFEE);
        $cmd->bindValue(':OUT_TRADE_NO', $OUT_TRADE_NO);
        $cmd->bindValue(':TRANSACTION_ID', $TRANSACTION_ID);
        $cmd->bindValue(':TIMEEND', $TIMEEND);
        $cmd->bindValue(':ATTACH', $ATTACH);

        $cmd->bindParam(':RESULTS', $RESULTS, \PDO::PARAM_STR, 50);
        $cmd->execute();
//        Yii::trace($orderid);
        return $RESULTS;
    }

    /*CREATE OR REPLACE PROCEDURE P_WXMALL_PAY_GOODS
(
RESULTCODE IN VARCHAR2         --业务结果
, ERRCODEDES IN VARCHAR2         --错误代码描述
, OPENID IN VARCHAR2             --用户编号(openId)
, TOTALFEE IN NUMBER             --订单总金额，单位为分
, OUT_TRADE_NO_WeiXin IN VARCHAR2     --商户订单号(微信用)
, TRANSACTIONID IN VARCHAR2       --微信的支付订单号
, TIMEEND IN VARCHAR2            --支付完成时间，格式为yyyyMMddHHmmss，如2009年12月25日9点10分10秒表示为20091225091010
, ATTACHIN  IN VARCHAR2          --附加数据，在查询API和支付通知中原样返回，该字段主要用于商户携带订单的自定义数据
, RESULTS OUT VARCHAR2           --返回值
)*/
    public static function P_WXMALL_PAY_GOODS($RESULTCODE, $ERRCODEDES, $OPENID, $TOTALFEE, $OUT_TRADE_NO, $TRANSACTION_ID, $TIMEEND, $ATTACH)
    {

//        echo $RESULTCODE.'-'.$ERRCODEDES.'-'. $OPENID.'-'. $TOTALFEE.'-'. $OUT_TRADE_NO.'-'.$TRANSACTION_ID.'-'. $TIMEEND.'-'.$ATTACH;
//        exit;


        $cmd = static::query()->createCommand('call P_WXMALL_PAY_GOODS(:RESULTCODE,:ERRCODEDES,:OPENID,:TOTALFEE,:OUT_TRADE_NO,:TRANSACTION_ID,:TIMEEND,:ATTACH,:RESULTS)');
        $cmd->bindValue(':RESULTCODE', $RESULTCODE);
        $cmd->bindValue(':ERRCODEDES', $ERRCODEDES);
        $cmd->bindValue(':OPENID', $OPENID);
        $cmd->bindValue(':TOTALFEE', $TOTALFEE);
        $cmd->bindValue(':OUT_TRADE_NO', $OUT_TRADE_NO);
        $cmd->bindValue(':TRANSACTION_ID', $TRANSACTION_ID);
        $cmd->bindValue(':TIMEEND', $TIMEEND);
        $cmd->bindValue(':ATTACH', $ATTACH);

        $cmd->bindParam(':RESULTS', $RESULTS, \PDO::PARAM_STR, 50);
        $cmd->execute();
        if ($RESULTS == '1') {//下nc订单
            $orderCode = WeixinPayCallbackController::getOrder($ATTACH);
            $order = WxGoodDao::getOrderByCode($orderCode);
            if ($order['STATUS'] == 3) {
                WxGoodDao::_setCoreOrder($order);
            }
        }
        return $RESULTS;
    }
}